1. Field of the Invention
This invention relates to computer networks, and, more particularly, to measuring latency in Web services and on networks.
2. Description of the Related Art
Web services may be used to provide Web software developers access to technology platforms and data, such as product catalogs, hosted on Web servers, or “Web sites”. Through Web services, developers may be empowered to innovate and build businesses by creating dynamic, interactive Web sites and Web applications that leverage Web services to access services, applications, and data on other Web servers/Web sites.
Generally speaking, a Web service interface may be configured to provide a standard, cross-platform API (Application Programming Interface) for communication between a client requesting some service to be performed and the service provider. In some embodiments, a Web service interface may be configured to support the exchange of documents or messages including information describing the service request and response to that request. Such documents, or messages, may be exchanged using standardized Web protocols, such as the Hypertext Transfer Protocol (HTTP), for example, and may be formatted in a platform-independent data format, such as eXtensible Markup Language (XML), for example.
Web services may be used in a variety of applications. One example of an area in which Web services may be used is for product merchandising. A first enterprise may provide a Web site or Web application hosted on one or more Web servers that may access information from a second enterprise's Web server or Web servers through Web services provided by the second enterprise's Web server(s), such as product catalog information, to merchandise products from the product catalog through the first enterprise's Web site or Web application. The second enterprise may earn a commission from the first enterprise for each sale.
FIG. 1 is a block diagram that illustrates an exemplary system configuration that provides a Web service interface to the logic and/or data of a Web site. In this example, a Web site, such as an e-commerce Web site, may be implemented on one or more servers 102, one or more of which may be coupled to Internet 100. Server(s) 102 may include software and/or hardware that implements enterprise logic 104 through which the functionalities of the Web site may be supported, for example through which items offered by an e-commerce Web site may be ordered.
Servers 102 may be coupled to data storage 110 for storing information in database 112 related to the Web site that may include, but is not limited to, Web pages, data related to the Web site, such as product information for an e-commerce Web site, and customer information. Data storage 110 may be implemented as one or more storage devices configured independently or as a storage system. In general, data storage 110 may be implemented as one or more of any type of storage device and/or storage system suitable for storing data used by the server systems of the Web site including, but not limited to: redundant array of inexpensive disks (RAID) devices, disk drives or arrays of disk drives such as Just a Bunch Of Disks (JBOD), (used to refer to disks that are not configured according to RAID), optical storage devices, tape drives, RAM disks, Storage Area Network (SAN), Network Access Storage (NAS), or combinations thereof.
Database 112 may be implemented as a single, monolithic database or as a combination of two or more databases and/or data stored in other, non-database formats, such as files stored in any of various file formats. Database 112 may be or may include a relational database, or may be or may include any other type of database, such as an object oriented database, depending on implementation, or combinations thereof.
One or more client systems 122 may be coupled to Internet 100. Each client system 122 may be configured to access the Web site using a Web client application, such as a Web browser, via a Web client interface 108. One or more other servers 120 may be coupled to Internet 100, such as servers that implement the Web sites of other enterprises, institutions, individuals, etc., or even other Web sites of the enterprise that provides server(s) 102. One or more of servers 120 may be configured to access enterprise logic 104 of servers 102 and/or database 112 via a Web service interface 106 provided by one or more of servers 102. Note that Web service interface does not provide a “Web browser” interface to enterprise logic 104 and database 112, but instead provides a programmatic interface via an API through which at least some functionality of enterprise logic 104 and/or at least some data in database 112 may be programmatically accessed by applications hosted on servers 120. An application that accesses enterprise logic 104 and/or database 112 via Web service interface 106 may be referred to as a Web service client. Note that a server 120 including a Web service client may provide Web sites accessible to clients 122 via Web browsers, and the Web service client may be configured to access enterprise logic 104 and/or database 112 of servers 102 via Web service interface 106 to provide access to at least a portion of logic 104 and/or database 112 via the Web site provided by the server 120.
While FIG. 1 illustrates an exemplary system configuration in which a Web site provides both a Web client interface and an Web service interface for accessing enterprise logic and/or data of the Web site, Web services may be used to provide programmatic access to applications, services and/or data not associated with a conventional Web site accessible to clients via a Web browser. FIG. 2 is a block diagram that illustrates an exemplary system configuration that provides a Web service interface, and shows the interaction between a Web service client and a Web service provider in more detail. In this example, a Web service interface 106 may be implemented on a server 130 coupled to Internet 100. This server 130 may be referred to as a “Web service provider”. Server 130, or alternatively one or more other servers coupled to server 130, may include one or more applications or services 108. Server 130 may be coupled to data storage 140 for storing information in database 142. Database 142 may include any type of data.
Server 120 may be coupled to Internet 100. Server 120 may host a Web service client 124. Web service client 124 may be configured to programmatically access application or service 108 of server 130 and/or database 142 via Web service interface 106. Note that Web service interface does not provide a “Web browser” interface, but instead provides a programmatic interface via an API through which at least some functionality of application or service 108 and/or at least some data in database 142 may be programmatically accessed by Web service client 124. Also note that server 120 may provide a Web site accessible to client(s) 122 via Web browsers, and Web service client 124 may be configured to access at least some functionality of application or service 108 and/or at least some data in database 142 of server 130 via Web service interface 106 to provide access to at least some functionality of application or service 108 and/or at least some data in database 142 via the Web site provided by server 120.
To access an application, service or data provided by the Web service provider 130, Web service client 124 may send a request message to Web service interface 106 via Internet 100. This request message goes through the network and Internet infrastructures; through the Web service client 124's local network routers, switches, firewalls, etc., through the Internet backbone, to the Web service provider's local network, to Server 130, and then to Web service interface 106. Web service provider 130 may then process the request, for example by performing an indicated function(s) of application or service 108 or accessing indicated data in database 142. Web service interface 106 may then return results of the processing to the Web service client 124 in a response message via Internet 100, back through the local networks and Internet backbone.